import logging
import os
from datetime import datetime


class Logger:
    def __init__(self, logger_name="WebLogger", log_level=logging.DEBUG):
        """
        初始化日志配置
        :param logger_name: 日志器名称
        :param log_level: 日志级别（DEBUG/INFO/WARNING/ERROR/CRITICAL）
        """
        # 创建日志器
        self.logger = logging.getLogger(logger_name)
        self.logger.setLevel(log_level)  # 设置全局日志级别

        # 避免日志重复输出
        if self.logger.handlers:
            return

        # 定义日志格式（包含时间、日志器名称、级别、模块、行号、消息）
        formatter = logging.Formatter(
            '%(asctime)s - %(name)s - %(levelname)s - %(module)s:%(lineno)d - %(message)s'
        )

        # 1. 控制台处理器（输出INFO及以上级别日志）
        console_handler = logging.StreamHandler()
        console_handler.setLevel(logging.INFO)  # 控制台只输出INFO及以上
        console_handler.setFormatter(formatter)

        # 2. 文件处理器（输出所有级别日志到文件）
        # 创建日志目录（如logs/）
        log_dir = "D:/program/python_Code/test_code/elife_auto_byhy/cases/logs"
        if not os.path.exists(log_dir):
            os.makedirs(log_dir)
        # 日志文件名（按日期命名，如2023-10-01.log）
        log_file = os.path.join(log_dir, f"{datetime.now().strftime('%Y-%m-%d')}.log")
        file_handler = logging.FileHandler(log_file, encoding="utf-8")
        file_handler.setLevel(logging.DEBUG)  # 文件输出所有级别
        file_handler.setFormatter(formatter)

        # 添加处理器到日志器
        self.logger.addHandler(console_handler)
        self.logger.addHandler(file_handler)

    def get_logger(self):
        """获取配置好的日志器"""
        return self.logger


# 实例化日志对象，供其他模块直接导入使用
logger = Logger().get_logger()
